/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package Service;

import DB.CodigosPrestaciones;
import DB.HibernateUtil;
import DB.PrestacionMedica;
import java.util.List;
import javax.jws.WebMethod;
import javax.jws.WebParam;
import javax.jws.WebService;
import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.Transaction;

/**
 *
 * @author Rodrigo
 */
@WebService()
public class PrestacionMedicaGeneralWS {

    @WebMethod(operationName = "agregarPrestacionMedicaGeneral")
    public boolean agregarPrestacionMedicaGeneral(@WebParam(name = "prestacion") PrestacionMedica prestacion) {
        return ControladorDeObjetos.saveObject(prestacion);
    }

    @WebMethod(operationName = "listarPrestacionesMedicasGeneral")
    public List<PrestacionMedica> listarPrestacionesMedicasGeneral() {
        return ControladorDeObjetos.getAllObjectByClassType(PrestacionMedica.class);
    }

    @WebMethod(operationName = "eliminarPrestacionMedicaGeneral")
    public boolean eliminarPrestacionMedicaGeneral(@WebParam(name = "Id") Long Id) {
        PrestacionMedica prestacion = (PrestacionMedica) ControladorDeObjetos.loadObjectByLongId(Id, PrestacionMedica.class);
        return ControladorDeObjetos.deleteObject(prestacion);
    }

    @WebMethod(operationName = "cargarPrestacionMedicaGeneral")
    public Object cargarPrestacionMedicaGeneral(@WebParam(name = "id") Long id) {
        return ControladorDeObjetos.loadObjectByLongId(id, PrestacionMedica.class);
    }

    @WebMethod(operationName = "cargarCodigoPrestacion")
    public Object cargarCodigoPrestacion(@WebParam(name = "id") String id) {
        return ControladorDeObjetos.loadObjectByStringId(id, CodigosPrestaciones.class);
    }

    @WebMethod(operationName = "listarCodigosPrestaciones")
    public List<CodigosPrestaciones> listarCodigosPrestaciones() {
        return ControladorDeObjetos.getAllObjectByClassType(CodigosPrestaciones.class);
    }
    
    @WebMethod(operationName = "listarPrestacionesPorPrograma")
    public List<PrestacionMedica> listarPrestacionesPorPrograma(@WebParam(name = "numeroPrograma") String numeroPrograma, @WebParam(name = "tipoPrograma") String tipoPrograma) {
        Session session = HibernateUtil.getSessionFactory().getCurrentSession();
        Transaction trans = session.beginTransaction();        
        Query q = session.createQuery("select c from PrestacionMedica c where c.numeroPrograma='"+numeroPrograma+"'"+" and c.tipoPrograma='"+tipoPrograma+"'");        
        return q.list();        
    } 
}
